// 如果需要在组件中使用计算属性功能，需要导入ComponentWithComputed'
import { ComponentWithComputed } from 'miniprogram-computed'
// 导入当前组件需要使用的 store 对象
import { numStore } from '../../stores/numstore'
// 目前组件使用的是ComponentWithComputed 进行构建
// 如果想和Store对象建立关联，进行绑定
//Mobx 需要使用旧版api
// 导入 Mobx
import { storeBindingsBehavior } from "mobx-miniprogram-bindings"
// 需要使用导入的ComponentWithComputed 替换 Component 方法
ComponentWithComputed({
    behaviors :[storeBindingsBehavior],
    storeBindings: {
        store: numStore,
        fields: ['numA','numB','sum'],
        actions: ['update']
    },
    computed: {
        total(data){
            // 计算属性方法内部必须有返回值
            // 在计算属性内部，不能使用this来获取data中的数据
            // 如果想获取 data 中的数据，需要使用形参
            // 计算属性具有缓冲特性
            // 计算属性只执行一次，后续在使用的时候，返回的是第一次执行的结果
            // 只要依赖的数据，没有发生改变，返回的始终是第一次执行的结果
            // 只要计算属性依赖的数据发生了变化，计算属性就会重新执行
            return data.a + data.b
        }
    },
    watch: {
        'a, b': function(a,b){
            console.log(a,b)
            this.setData({
                c: a + b
            })
        }
    },
    /**
     * 组件的属性列表
     */
    properties: {
    },
    /**
     * 组件的初始数据
     */
    data: {
        a: 1,
        b: 2,
        c:''
    },

    /**
     * 组件的方法列表
     */
    methods: {
        updateData () {
            this.setData({
                a: this.data.a + 1,
                b: this.data.b + 1,
            })
        }
    }
})